/**x轴，y轴，Speed模拟量读取变量定义 start***/
int x=0;
int y=0;
int s=0;

int x1=0;
int y1=0;
int s1=0;
int s2=0;
int ss=0;
/**x轴，y轴，Speed模拟量读取变量定义  end***/

int i=0;  //飞控端发回状态值变量

int op=0;//状态开关值

void setup() {
    /**串口初始化 start***/
   Serial2.begin(115200);
   Serial.begin(115200);
   /**串口初始化 end***/
   
pinMode(11,OUTPUT);       //蜂鸣器引脚初始化
pinMode(3,INPUT_PULLUP);  //遥控启动引脚初始化

/**遥控开机提示 start***/
for(int d=2;d>0;d--)
{
 tone(11,2);
  delay(d*100);
  noTone(11);
  delay(100);
}
/**遥控开机提示 end***/

}

void loop() {
  /**遥控启动 start***/
if((digitalRead(3)==0)&&(op==0))
{
op=1;
}
/**遥控启动 end***/

 /**拨码开关遥控停止 start***/
if((digitalRead(3)==1)&&(op==1))
{for(int d=2;d>0;d--)
{
  tone(11,2);
  delay(d*200);
  noTone(11);
  delay(100);
}
op=0;
   Serial2.print("$");//36//停止飞行指令
   Serial2.print("!");//33 用于将每次传入的数值读取到，防止缓冲导致读取的不及时！
 
}
 /**拨码开关 遥控停止 end***/

 /**遥控端接收 start***/
  if( Serial2.available()>1)
 { i=Serial2.read();
// Serial.println(i);
}
 /**遥控端接收 end***/

  /**飞控低压停止飞行 start***/
  if(i==49)
{ 
  if(op==1)
  { 
  tone(11,5);
  delay(100);
  noTone(11);
  delay(100);
  }
  op==0;      //遥控停止状态值
  i=0;        //遥控接收端数值归零
}
  /**飞控低压停止飞行 end***/


   /**遥控模拟量读取 start***/
       x=analogRead(A0);
       y=analogRead(A1);
       s=analogRead(A2)/7;
      /**遥控模拟量读取 end***/

      /**x轴，y轴，Speed 遥控模拟量输出值设置 start***/
  if(x>950)
    x=1;
  else if(x<50)
   x=2; 
   else
   x=0;
  if(y>950)  
    y=1; 
  else if(y<50)
    y=2;
else
y=0;
if(s<15)
s=0;
if(s>120)
s=120;
    /**x轴，y轴，Speed 遥控模拟量输出值设置 end***/

   /**遥控发送 start***/
 if((s!=s2)&&(op==1))
{  
pt();   //调用发送函数
}
  /**遥控发送 end***/
}
  /**遥控发送函数 start***/
void pt()
{
   /**防止速度间差值过大引起剧烈反应 start***/
  ss=s1-s;
 if(ss<-25)
 s1=s-25;
else if(ss>25)
 s1=s1-25;
 else
  s1=s;
   /**防止速度间差值过大引起剧烈反应 end***/
  
  x1=x;
  y1=y;
  
  s2=s;
   if(s!=0)
 {
 /**遥控端发送格式 start***/
     Serial2.print("&");//38
     Serial2.print(x1);
     Serial2.print("!");//33
     Serial2.print(y1);
     Serial2.print("!");
     Serial2.print(s1);
     Serial2.print("!");
     Serial2.print("%");//37
     Serial2.print("&");//38 用于将每次传入的数值读取到，防止缓冲导致读取的不及时！
      /**遥控端发送格式 end***/
 }
  /**遥控端停止飞行指令 start***/
   else 
   {
  if(ss>20)
  {
      s1=20;
     for(s1;s1>0;s1=s1-5)
      {
    Serial2.print("&");//38
    Serial2.print(x1);
    Serial2.print("!");//33
    Serial2.print(y1);
    Serial2.print("!");
    Serial2.print(s1);
    Serial2.print("!");
    Serial2.print("%");//37
    Serial2.print("&");//38 用于将每次传入的数值读取到，防止缓冲导致读取的不及时！
     delay(10);
     }
  }
     Serial2.print("&");//38
     Serial2.print(x1);
     Serial2.print("!");//33
     Serial2.print(y1);
     Serial2.print("!");
     Serial2.print(0);
     Serial2.print("!");
     Serial2.print("%");//37
     Serial2.print("&");//38 用于将每次传入的数值读取到，防止缓冲导致读取的不及时！
     delay(10);
 }
  /**遥控端停止飞行指令 end***/

}
 /**遥控发送函数 end***/

